home *** CD-ROM | disk | FTP | other *** search
-
-
- 10 '*****************************************************************
- 11 '* PROGRAM TO PLOT XDS TRACE DATA ON TI PC *
- 12 '* TO COLLECT DATA: RUN PROGRAM WITH TRACE SET ON XDS. CAPTURE *
- 13 '* THE DISPLAYED TRACE (USING 'DT' COMMAND) TO A FILE. RUN THIS *
- 14 '* PROGRAM TO PLOT DATA ON PC. USE 'PRNTSCRN' OR 'GPRINT' *
- 16 '* COMMANDS TO OBTAIN A HARD COPY. TITLES CAN BE ADDED AT THE *
- 18 '* BOTTOM OF SCREEN BEFORE PRINTING BY USING FUNTION KEY (F7) *
- 19 '* *
- 20 '* Written by: Peter Ehlig *
- 21 '* Modified by: Raj Chirayil *
- 22 '* Copyright Texas Instruments, 07/18/86 *
- 23 '* *
- 25 '*****************************************************************
- 30 DIM PLT(10,700),N$(10),SIGSCL(10)
- 35 CLS: KEY OFF: S=4
- 35 CX = 0: CY = 0
- 40 COLOR 4,0
- 50 KEY ON
- 55 KEY(1) ON
- 60 KEY(2) ON
- 65 KEY(3) ON
- 70 KEY(4) ON
- 75 KEY(5) ON
- 80 KEY(6) ON
- 85 KEY(7) ON
- 90 KEY(8) ON
- 95 KEY(9) ON
- 100 KEY(10) ON
- 110 GOSUB 1420
- 115 INPUT "# OF VARIABLES (MAX 6) = ",J
- 120 FOR I = 1 TO J
- 125 PRINT "NAME OF VARIABLE ";I;:INPUT N$(I)
- 130 NEXT
- 135 PRINT "SIGNALS FOR CONSTELLATION: ";
- 140 INPUT;"X-AXIS ";CX : INPUT " Y-AXIS ";CY
- 160 INPUT "INPUT FILE NAME = ", INFILE$
- 170 OPEN INFILE$ FOR INPUT AS #2
- 180 J1 = 1
- 190 GOSUB 240 'LOAD PLOT DATA
- 200 GOTO 780
- 240 'READ FILE AND LOAD PLOT DATA
- 250 I = 1
- 260 INPUT#2,R$
- 270 IF MID$(R$,1,4) <> "0000" THEN GOTO 260
- 280 WHILE NOT EOF(2)
- 290 H$ = MID$(R$,44,4)
- 300 SIG = 0
- 310 C$ = MID$(H$,4,1)
- 320 GOSUB 510
- 330 SIG = SR
- 340 C$ = MID$(H$,3,1)
- 350 GOSUB 510
- 360 SIG = SIG + SR * 16
- 370 C$ = MID$(H$,2,1)
- 380 GOSUB 510
- 390 SIG = SIG + SR * 256
- 400 C$ = MID$(H$,1,1)
- 410 GOSUB 510
- 420 SIG = SIG + SR * 4096
- 430 IF SIG > 32767 THEN SIG = SIG - 65536!
- 440 PLT(J1,I) = SIG / 32384
- 450 IF J1 = J THEN J1 = 1: I = I + 1 ELSE J1 = J1 + 1
- 460 INPUT#2,R$
- 470 IF MID$(R$,1,1) <> "0" AND NOT EOF(2) GOTO 460
- 480 WEND
- 490 I = I - 1
- 500 RETURN
- 510 'CONVERT NIBBLE FROM HEX ASCII TO DECIMAL INTEGER
- 520 SR = ASC(C$) - 48
- 530 IF SR < 0 THEN SR = 0
- 540 IF SR > 9 THEN SR = SR - 7
- 550 RETURN
- 560 ' ************* PLOT SIGNALS
- 570 X = 1: LOCATE 1,1
- 580 INPUT "NEW SCREEN (N) OR OVERLAY (O) ? ",ANS$
- 585 LOCATE 1,1: PRINT " "
- 590 IF ANS$ = "N" THEN CLS: S=4 ELSE GOTO 610
- 600 LINE(17,150)-(700,150)
- 610 COLOR K,0
- 620 LOCATE 4,S: S=S+10: PRINT N$(K)
- 630 ' ************* PLOT DATA
- 640 Y = 150 - YR * EXPAND * PLT(K,STRT)
- 650 CB = 1 ' BAUD INTERVAL COUNTER
- 660 FOR L = STRT+1 TO FINI
- 670 YN = 150 - YR * EXPAND * PLT(K,L)
- 675 IF X < 17 THEN GOTO 690
- 680 LINE (X,Y) - (X+XI,YN)
- 690 X = X + XI
- 700 Y = YN
- 710 CB = CB + 1
- 720 COLOR 7,0
- 730 'IF CB = 16 THEN LINE(X,50)-(X,250): CB=1 'ADD FOR GRID
- 735 IF X < 17 THEN GOTO 750
- 740 LINE(X,147)-(X,153)
- 750 COLOR K,0
- 760 NEXT
- 770 RETURN
- 780 ' ************* PLOTTER ROUTINES
- 790 CLS
- 800 PRINT "DATA INPUT COMPLETE"
- 810 STRT = 1
- 820 FINI = I
- 830 EXPAND = 1
- 840 HCDT = 0
- 850 FOR K = 1 TO J
- 860 SIGSCL(K) = 1
- 870 NEXT
- 880 XI = 700 / (FINI-STRT)
- 890 YR = 100
- 900 IKEY = 0
- 910 COLOR 4,0
- 950 ON KEY(1) GOSUB 1080
- 955 ON KEY(2) GOSUB 1010
- 960 ON KEY(3) GOSUB 1540
- 965 ON KEY(4) GOSUB 1140
- 970 ON KEY(5) GOSUB 1590
- 975 ON KEY(6) GOSUB 1800
- 980 ON KEY(7) GOSUB 2000
- 985 ON KEY(8) GOSUB 2100
- 990 ON KEY(9) GOSUB 20000
- 995 ON KEY(10) GOSUB 1700
- 1000 GOTO 910
- 1010 ' *********** PLOT SIGNALS
- 1020 LOCATE 1,1: INPUT "REPLOT WHICH SIGNAL ? ",K
- 1025 LOCATE 1,1
- 1026 PRINT " "
- 1030 XI = 700 / (FINI-STRT)
- 1040 EXPAND = SIGSCL(K)
- 1050 GOSUB 560
- 1060 KEY(2) ON
- 1070 RETURN
- 1080 COLOR 7,0
- 1090 KEY(1) ON
- 1100 CLOSE
- 1110 IF HCDT = 1 THEN GOSUB 1370
- 1120 CLS
- 1125 SYSTEM
- 1130 END
- 1140 PRINT "CURRENT START POINT = ",STRT
- 1150 INPUT "NEW START POINT = ? ",NSTRT
- 1160 IF NSTRT > 0 THEN STRT = NSTRT
- 1170 PRINT "CURRENT END POINT = ",FINI
- 1180 INPUT "NEW END POINT = ? ",NFINI
- 1190 IF NFINI > STRT THEN FINI = NFINI
- 1200 CLS
- 1210 RETURN
- 1220 KEY(4) ON
- 1230 FOR K = 1 TO J
- 1240 PRINT "SCALING FACTOR FOR ",N$(K)," = ",SIGSCL(K)
- 1250 INPUT "NEW SCALING VALUE = ? ",NSCL
- 1260 IF NSCL > 0 THEN SIGSCL(K) = NSCL
- 1270 NEXT
- 1280 CLS
- 1290 RETURN
- 1300 ' *********** SET UP GPRINT
- 1310 DPM$ = CHR$(27)+CHR$(64)
- 1320 WPM$ = CHR$(27)+CHR$(13)
- 1330 OPEN "LPT1:" FOR OUTPUT AS #5
- 1340 PRINT#5,DPM$
- 1350 CLOSE#5
- 1360 RETURN
- 1370 ' *********** RESET PRINTER TO WP MODE
- 1380 OPEN "LPT1:" FOR OUTPUT AS #5
- 1390 PRINT #5,WPM$
- 1400 CLOSE#5
- 1410 RETURN
- 1420 ' *********** DEFINE FUNCTION KEYS
- 1430 KEY 1,"QUIT"
- 1440 KEY 2,"PLOT"
- 1450 KEY 3,"SCALE"
- 1460 KEY 4,"EXPAND"
- 1470 KEY 5,"P850"
- 1480 KEY 6,"RENAME"
- 1490 KEY 7,"TITLE"
- 1500 KEY 8,"CNSTLN"
- 1510 KEY 9,"BRDR"
- 1520 KEY 10,"KEY"
- 1530 RETURN
- 1540 ' *********** SET UP SCALING FACTORS
- 1550 CLS
- 1560 KEY(3) ON
- 1570 GOSUB 1230
- 1580 RETURN
- 1590 ' *********** DEFINE HARDCOPY DEVICE
- 1600 IF HCDT=0 THEN HCDT=1: KEY 5,"P855" ELSE HCDT=0: KEY 5,"P850"
- 1610 IF HCDT = 1 THEN GOSUB 1300
- 1620 KEY(5) ON
- 1630 RETURN
- 1700 ' *********** TURN KEYS ON OR OFF ************
- 1705 IF IKEY=0 THEN IKEY=1: KEY OFF: COLOR 0,0 ELSE IKEY=0: KEY ON: COLOR 7,0
- 1715 KEY(10) ON
- 1720 RETURN
- 1800 ' *********** RE-DEFINE SIGNAL NAMES
- 1810 KEY(6) ON
- 1820 FOR I = 1 TO J
- 1830 PRINT "NAME OF VARIABLE ";I;:INPUT N$(I)
- 1840 NEXT
- 1850 PRINT "SIGNALS FOR CONSTELLATION: (1-6) ";
- 1860 INPUT;"X-AXIS ";CX: INPUT " Y-AXIS ";CY
- 1870 RETURN
- 2000 ' ************ INPUT TITLE AT THE BOTTOM OF THE SCREEN
- 2010 KEY(7) ON
- 2020 LOCATE 22,15: INPUT "",T$
- 2030 RETURN
- 2100 ' ************* PLOT CONSTELLATION POINTS
- 2105 IF CX < 1 THEN GOSUB 1860
- 2106 IF CX > 6 THEN GOSUB 1860
- 2110 CLS: COLOR 7,0
- 2115 LINE(200,150)-(500,150) ' DRAW X-AXIS
- 2120 LINE(350,65)-(350,235) ' DRAW Y-AXIS
- 2121 LINE(351,65)-(351,235) ' DRAW Y-AXIS
- 2130 COLOR CY,0
- 2140 LOCATE 5,40: PRINT "Q"
- 2145 LOCATE 13,57: PRINT "I"
- 2150 KEY(8) ON
- 2160 'Y = 150 - YR * EXPAND * PLT(K,STRT)
- 2170 CB = 1
- 2180 FOR L = STRT+1 TO FINI
- 2190 YN = 150 - YR * SIGSCL(CY) * PLT(CY,L)
- 2200 XN = 350 - YR * SIGSCL(CX) * 2.4 * PLT(CX,L)
- 2210 CIRCLE (XN,YN),1,CX
- 2240 CB = CB + 1
- 2260 'IF CB = 16 THEN LINE(X,50)-(X,250): CB=1 'ADD FOR GRID
- 2270 'LINE(X,147)-(X,153)
- 2290 NEXT
- 2300 RETURN
- 3000 ' ************* ROUTINE TO DRAW BORDER *************
- 20000 'CLS : KEY OFF
- 20010 ' GOSUB 20500 ' SET UP PRINTER
- 20020 ' DRAW FROM DATA SUBROUTINE
- 20030 X0=360 : Y0=150 : X1=X0 : Y1=Y0
- 20040 S=1 : C=7 : R=1.8
- 20050 READ X2,Y2 : IF X2<0 THEN 20080
- 20060 LINE -(X0+X2*S,Y0+Y2*S/R),C
- 20070 X1=X2 : Y1=Y2 : GOTO 20050
- 20080 IF X2=-1 THEN 20460 ' END OF DATA
- 20090 IF X2=-2 THEN 20180 ' MOVE
- 20100 IF X2=-3 THEN 20200 ' CIRCLE
- 20110 IF X2=-4 THEN 20210 ' PAINT
- 20120 IF X2=-5 THEN 20230 ' SET SCALE FACTOR
- 20130 IF X2=-6 THEN 20240 ' SET STARTING POINT
- 20140 IF X2=-7 THEN 20250 ' SET COLOR
- 20150 IF X2=-8 THEN 20260 ' BOX
- 20160 IF X2=-9 THEN 20280 ' FILLED BOX
- 20170 PRINT "* * * BAD COMMAND: ";STR$(X2) : GOTO 20260
- 20180 READ X1,Y1 : C1=POINT (X0+X1*S,Y0+Y1*S/R)
- 20190 PSET (X0+X1*S,Y0+Y1*S/R),C1 : GOTO 20050
- 20200 READ X2,Y2,X3 : CIRCLE (X0+X2*S,Y0+Y2*S/R),X3*S,C : GOTO 20050
- 20210 ' READ X2,Y2,C,B : PAINT (X0+X2*S,Y0+Y2*S/R),C,B : GOTO 50
- 20220 READ X2,Y2,C,B : GOTO 20050
- 20230 READ S : GOTO 20050
- 20240 READ X0,Y0 : GOTO 20050
- 20250 READ C : GOTO 20050
- 20260 READ X1,Y1,X2,Y2:LINE (X0+X1*S,Y0+Y1*S/R)-(X0+X2*S,Y0+Y2*S/R),C,B
- 20270 GOTO 20050
- 20280 READ X1,Y1,X2,Y2:LINE (X0+X1*S,Y0+Y1*S/R)-(X0+X2*S,Y0+Y2*S/R),C,BF
- 20290 GOTO 20050
- 20300 ' TI LOGO
- 20310 DATA -6,-6,620,270,-5,-5,.20,-7,-7,4,-2,-2,70,16
- 20320 DATA 70,106,5,106,8,112,20,122,33,136,39,142
- 20330 DATA 44,156,45,160,50,164,59,168,65,168,73,166,78,160
- 20340 DATA 85,158,90,158,105,162,113,170,126,200,136,214,150,226
- 20350 DATA 163,232,175,232,184,232,186,230,186,228,186,226,181,212
- 20360 DATA 183,198,189,188,213,170,235,158,240,156,248,148,250,140
- 20370 DATA 250,98,240,92,238,88,236,74,235,68,220,62,205,60
- 20380 DATA 189,66,185,82,203,82,197,110,179,110,170,142,169,156
- 20390 DATA 173,158,182,154,174,172,165,182,150,186,138,182,128,168
- 20400 DATA 126,154,136,110,118,110,124,82,142,82,147,58,130,52
- 20410 DATA 130,16,70,16
- 20420 DATA -2,-2,153,70,136,144,162,144,179,70,153,70
- 20430 DATA -4,-4,100,100,4,4,-4,-4,160,100,4,4
- 20440 DATA -3,-3,170,35,12,-4,-4,170,35,4,4
- 20450 DATA -1,-1
- 20460 ' GOSUB 600
- 20470 GOSUB 20600
- 20480 GOSUB 20790
- 20485 RESTORE: X1 = 1: Y1 = 1
- 20490 RETURN
- 20500 ' SETUP PRINTER FOR GRAPHIC PRINT
- 20510 DPM$ = CHR$(27)+CHR$(64)
- 20520 OPEN "LPT1:" FOR OUTPUT AS #5
- 20530 PRINT#5,DPM$
- 20540 RETURN
- 20550 'SETUP PRINTER FOR NORMAL OPERATION
- 20560 WPM$ = CHR$(27)+CHR$(13)
- 20570 PRINT#5,WPM$
- 20580 CLOSE#5
- 20590 RETURN
- 20600 ' DISPLAY BORDER
- 20610 COLOR 4,0
- 20620 CIRCLE (40,18),24,4,1.57,3.14
- 20630 CIRCLE (40,18),23,4,1.57,3.14
- 20640 LINE (16,18) - (16,274)
- 20650 LINE (17,18) - (17,274)
- 20660 CIRCLE (40,274),24,4,3.14,4.71
- 20670 CIRCLE (40,274),23,4,3.14,4.71
- 20680 LINE (40,287) - (612,287)
- 20690 CIRCLE (680,274),24,4,4.71,0
- 20700 CIRCLE (680,274),23,4,4.71,0
- 20710 LINE (704,274) - (704,14)
- 20720 LINE (703,274) - (703,14)
- 20730 CIRCLE (680,18),24,4,0,1.57
- 20740 CIRCLE (680,18),23,4,0,1.57
- 20750 LINE (680,5) - (605,5)
- 20760 LINE (480,5) - (275,5)
- 20770 LINE (75,5) - (39,5)
- 20780 RETURN
- 20790 'BOARDER HEADER
- 20800 LOCATE 1,10
- 20810 PRINT "PROGRAMMABLE PRODUCTS TMS320 FAMILY"
- 20820 RETURN